Exception Handling (Exception Handling in Apex)

Computer Programming - এপেক্স (Apex)
205
205

Exception Handling হলো Apex প্রোগ্রামিংয়ের একটি প্রক্রিয়া, যার মাধ্যমে কোডে চলাকালীন সময়ে কোনো সমস্যা বা ত্রুটি ঘটলে তা সনাক্ত করা এবং সেই অনুযায়ী পদক্ষেপ নেওয়া হয়। Exception Handling প্রোগ্রামের স্থায়িত্ব ও নির্ভরযোগ্যতা বাড়ায় এবং ব্যবহারকারীদের জন্য উন্নত অভিজ্ঞতা প্রদান করে।


Apex Exception Handling এর মূল ধারণা

Apex কোড চালানোর সময় যে কোনো অনাকাঙ্ক্ষিত ত্রুটি বা সমস্যা ঘটলে Salesforce Exception তৈরি করে। Exception Handling এর মাধ্যমে Apex কোডে ত্রুটির অবস্থান সনাক্ত করে try-catch-finally ব্লকের মাধ্যমে সঠিক পদক্ষেপ গ্রহণ করা যায়। এতে করে অ্যাপ্লিকেশন ত্রুটির সময়ও সঠিকভাবে কাজ করতে পারে এবং কোডের কার্যকারিতা বজায় থাকে।


Exception Handling এর মূল উপাদানসমূহ

  1. try ব্লক: try ব্লকের মধ্যে কোড রাখা হয় যেখানে Exception ঘটতে পারে। যদি কোনো Exception ঘটে, তবে সেটি catch ব্লকে পাঠানো হয়।
  2. catch ব্লক: catch ব্লকের মাধ্যমে Exception সনাক্ত করা হয় এবং ত্রুটি হ্যান্ডলিংয়ের জন্য সঠিক পদক্ষেপ নেওয়া হয়।
  3. finally ব্লক: finally ব্লক সবসময় চালানো হয়, Exception ঘটুক বা না ঘটুক। এটি সাধারণত ক্লিনআপ কাজের জন্য ব্যবহৃত হয়।

Exception Handling এর সাধারণ উদাহরণ

try {
    // Potential exception-throwing code
    Account acc = new Account(Name = '');
    insert acc;
    System.debug('Account inserted successfully');
} catch (DmlException e) {
    System.debug('DML Exception: ' + e.getMessage());
} catch (Exception e) {
    System.debug('General Exception: ' + e.getMessage());
} finally {
    System.debug('Operation completed');
}
  • try ব্লক: যেখানে নতুন Account রেকর্ড ইনসার্ট করা হচ্ছে।
  • catch ব্লক: যদি DML Exception ঘটে, তবে DmlException ব্লক কাজ করবে; অন্য Exception হলে সাধারণ Exception ব্লক কাজ করবে।
  • finally ব্লক: সবসময় চালানো হবে এবং এক্ষেত্রে "Operation completed" মেসেজ প্রিন্ট করবে।

Exception এর ধরনসমূহ

Apex-এ বেশ কয়েকটি বিল্ট-ইন Exception রয়েছে, যা বিভিন্ন ধরণের ত্রুটির জন্য ব্যবহৃত হয়:

  1. DmlException: DML অপারেশনের সময় কোনো ত্রুটি ঘটলে তৈরি হয়।
  2. NullPointerException: যদি কোনো Null রেফারেন্স ব্যবহার করা হয়, তবে এই Exception তৈরি হয়।
  3. QueryException: SOQL কুয়েরির সময় ত্রুটি ঘটলে তৈরি হয়।
  4. ListException: List অপারেশনের সময় ত্রুটি ঘটলে তৈরি হয়, যেমন অকার্যকর ইনডেক্স ব্যবহার।
  5. ApexPages.Exception: Visualforce পেজের ত্রুটি ব্যবস্থাপনা।
  6. Custom Exception: প্রয়োজন অনুযায়ী নিজস্ব Exception তৈরি করা যায়।

DmlException উদাহরণ

DML অপারেশনের সময় যদি ত্রুটি ঘটে, তাহলে DmlException তৈরি হয়। নিচে DmlException এর একটি উদাহরণ দেয়া হলো:

try {
    Account acc = new Account(Name = '');
    insert acc;
} catch (DmlException e) {
    System.debug('DML Error: ' + e.getMessage());
}
  • এখানে, Name ফিল্ড ফাঁকা থাকার কারণে DML Exception তৈরি হবে এবং catch ব্লকে e.getMessage() এর মাধ্যমে ত্রুটির বার্তা প্রিন্ট করবে।

Custom Exception

Apex-এ Custom Exception তৈরি করে নির্দিষ্ট ত্রুটি হ্যান্ডলিং করা যায়, যা অ্যাপ্লিকেশনের কার্যকারিতা বৃদ্ধি করে। Custom Exception তৈরি করতে একটি ক্লাস তৈরি করে extends Exception ব্যবহার করা হয়।

Custom Exception উদাহরণ

public class MyCustomException extends Exception {}

try {
    throw new MyCustomException('Custom exception occurred');
} catch (MyCustomException e) {
    System.debug('Custom Exception: ' + e.getMessage());
}
  • এখানে MyCustomException নামে একটি কাস্টম Exception তৈরি করা হয়েছে এবং নির্দিষ্ট ত্রুটি মেসেজ প্রিন্ট করা হয়েছে।

Exception Handling এর কিছু গুরুত্বপূর্ণ মেথড

  1. getMessage(): Exception এর বার্তা প্রদান করে।
  2. getTypeName(): Exception এর টাইপ বা নাম প্রদান করে।
  3. getLineNumber(): Exception ঘটার লাইনের নম্বর প্রদান করে।
  4. getCause(): Exception এর কারণ বা উৎস প্রদান করে।

উদাহরণ

try {
    Integer x = 5 / 0;
} catch (ArithmeticException e) {
    System.debug('Error Message: ' + e.getMessage());
    System.debug('Exception Type: ' + e.getTypeName());
    System.debug('Line Number: ' + e.getLineNumber());
}

Exception Handling এর সেরা স্ট্র্যাটেজি

  1. স্পেসিফিক Exception Catch করা: সাধারণ Exception এর পরিবর্তে নির্দিষ্ট Exception যেমন DmlException, QueryException হ্যান্ডল করা উচিত।
  2. Error Logging: Exception ঘটে গেলে লগে ত্রুটির বিস্তারিত সংরক্ষণ করা উচিত, যা পরে বিশ্লেষণ করতে সহায়ক।
  3. Custom Exception Messages: ব্যবহারকারীকে বুঝতে সহজ হয় এমন ত্রুটি বার্তা ব্যবহার করা উচিত।
  4. Finally ব্লক ব্যবহার করা: Exception ঘটলেও কিছু ক্লিনআপ কাজ সম্পন্ন করতে finally ব্লক ব্যবহার করা উচিত।
  5. Custom Exception ব্যবহার: নির্দিষ্ট পরিস্থিতিতে Custom Exception ব্যবহার করে ত্রুটি সনাক্ত করা এবং সমাধান করা সহজ হয়।

সারসংক্ষেপ

  • Exception Handling Apex-এ ত্রুটি শনাক্ত এবং হ্যান্ডল করার প্রক্রিয়া, যা কোডকে আরও স্থায়ী ও নির্ভরযোগ্য করে তোলে।
  • try-catch-finally ব্লক Exception Handling এর মূল উপাদান, যা কোডে ত্রুটির সময় সঠিক পদক্ষেপ গ্রহণ করে।
  • Custom Exception ব্যবহার করে কাস্টম ত্রুটি হ্যান্ডলিং করা যায়।
  • Exception Properties যেমন getMessage(), getTypeName() ব্যবহার করে Exception সম্পর্কে বিস্তারিত তথ্য পাওয়া যায়।

Apex-এ Exception Handling ব্যবহার করে ডেটা ম্যানিপুলেশন ও অন্যান্য প্রক্রিয়াকরণের সময় ত্রুটি এড়ানো এবং সঠিক পদক্ষেপ নেওয়া সম্ভব, যা অ্যাপ্লিকেশনের স্থায়িত্ব ও ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।

Content added || updated By

Exception Handling এর মৌলিক ধারণা

184
184

Exception Handling হলো এমন একটি প্রক্রিয়া যা প্রোগ্রামিং চলাকালীন ত্রুটি বা অপ্রত্যাশিত পরিস্থিতি সনাক্ত করে এবং সেই ত্রুটির জন্য একটি নির্দিষ্ট সমাধান প্রদান করে। Exception Handling-এর প্রধান উদ্দেশ্য হলো প্রোগ্রাম চলাকালীন ত্রুটি ঘটলেও প্রোগ্রাম যেন ধ্বংস না হয় এবং নির্দিষ্ট পদ্ধতিতে কার্যক্রম সম্পন্ন করতে পারে।

Apex-এ Exception Handling ত্রুটি সনাক্ত করে এবং তা যথাযথভাবে পরিচালনা করতে try, catch, finally ব্লক ব্যবহার করে। এটি প্রোগ্রামিংকে আরও নির্ভুল ও স্থিতিশীল করে তোলে, কারণ Exception Handling এর মাধ্যমে প্রোগ্রামের ত্রুটি সমাধান বা নির্দেশনা দেওয়া সম্ভব হয়।


Exception Handling এর প্রধান উপাদান

try ব্লক: প্রোগ্রামের সেই অংশ যেখানে ত্রুটি ঘটার সম্ভাবনা রয়েছে, তাকে try ব্লকের মধ্যে রাখা হয়। যখনই এই অংশে ত্রুটি দেখা দেয়, তখন Exception Handling এর প্রক্রিয়া শুরু হয়।

catch ব্লক: catch ব্লক ব্যবহার করে ত্রুটির ধরন অনুযায়ী উপযুক্ত ব্যবস্থা নেওয়া যায়। ত্রুটি ঘটলে catch ব্লক এক্সিকিউট হয় এবং ত্রুটি সমাধানের জন্য নির্দিষ্ট লজিক সম্পাদন করে।

finally ব্লক: finally ব্লক এমন একটি অংশ, যা try এবং catch ব্লকের পরে অবশ্যই এক্সিকিউট হয়। এটি Exception ঘটুক বা না ঘটুক, সব ক্ষেত্রেই কার্যকর হয়। সাধারণত finally ব্লক রিসোর্স রিলিজ বা ক্লিন-আপ কার্যক্রমের জন্য ব্যবহৃত হয়।


Exception Handling এর সাধারণ সিনট্যাক্স

apex

Copy code

try {    // কোড যা ত্রুটি ঘটাতে পারে } catch (ExceptionType e) {    // ত্রুটি সমাধানের জন্য লজিক } finally {    // অতিরিক্ত কার্যক্রম, যা অবশ্যই কার্যকর হবে }

  • ExceptionType: ত্রুটির ধরণ বা টাইপ উল্লেখ করা হয়, যেমন NullPointerException, DmlException ইত্যাদি।
  • e: Exception অবজেক্ট, যা ত্রুটির বিস্তারিত তথ্য ধারণ করে এবং getMessage() বা getStackTraceString() এর মাধ্যমে ত্রুটির বিবরণ দেখা যায়।

Apex Exception Handling এর উদাহরণ

নিচে একটি সাধারণ উদাহরণ দেয়া হলো যেখানে Division by Zero এর Exception Handling করা হয়েছে।

apex

Copy code

public class DivisionExample {    public void divideNumbers(Integer a, Integer b) {        try {            Integer result = a / b;            System.debug('Result: ' + result);        } catch (ArithmeticException e) {            System.debug('Cannot divide by zero: ' + e.getMessage());        } finally {            System.debug('Operation completed.');        }    } }

  • এখানে, try ব্লকের মধ্যে a / b অপারেশনটি রয়েছে, যা b এর মান শূন্য হলে ত্রুটি সৃষ্টি করবে।
  • catch ব্লকে ArithmeticException ধরার ব্যবস্থা করা হয়েছে এবং ত্রুটির একটি বার্তা প্রদর্শন করা হয়েছে।
  • finally ব্লকে একটি মেসেজ প্রিন্ট করা হয়েছে, যা Exception ঘটুক বা না ঘটুক সব অবস্থাতেই কার্যকর হবে।

Apex এর Common Exceptions

Apex এ কিছু সাধারণ Exception রয়েছে, যা প্রায়ই প্রোগ্রামিং চলাকালীন ঘটে। এর মধ্যে কয়েকটি হলো:

  1. DmlException: DML অপারেশনের সময় ত্রুটি ঘটলে সৃষ্টি হয়।
  2. NullPointerException: যখন Null ভ্যালু অ্যাক্সেস করতে চেষ্টা করা হয়, তখন সৃষ্টি হয়।
  3. ListException: যখন লিস্ট অপারেশন ভুলভাবে প্রয়োগ করা হয়, তখন ঘটে।
  4. QueryException: SOQL কুয়েরি থেকে ত্রুটি ঘটলে সৃষ্টি হয়।
  5. TypeException: যখন কোনো ভেরিয়েবল বা অবজেক্ট ভুল টাইপে কাস্ট করতে চেষ্টা করা হয়।

Exception Handling এর ব্যবহারিক দিক

Exception Handling-এর মাধ্যমে প্রোগ্রামিংয়ে কিছু ব্যবহারিক সুবিধা পাওয়া যায়:

  1. ত্রুটির প্রভাব কমানো: ত্রুটি ঘটলে তা সমাধানের মাধ্যমে প্রোগ্রাম ক্র্যাশ হওয়া থেকে রক্ষা পাওয়া যায়।
  2. Debugging সহজ করা: Exception Handling ত্রুটির উৎস এবং বিবরণ জানাতে সহায়ক হয়, যা ডিবাগিং আরও সহজ করে।
  3. রিসোর্স ম্যানেজমেন্ট: finally ব্লক ব্যবহার করে অবশিষ্ট রিসোর্স যেমন ডেটাবেস কানেকশন বা ফাইল রিসোর্স বন্ধ করা যায়।
  4. ব্যবহারকারীর জন্য উপযোগী বার্তা: ত্রুটির ধরন অনুযায়ী ব্যবহারকারীকে নির্দেশনা দেওয়া যায়।

উদাহরণ: DML Exception Handling

নিচের উদাহরণে, একটি DML অপারেশনে Exception Handling দেখানো হয়েছে।

apex

Copy code

public class DmlExample {    public void createAccount(String name) {        try {            Account acc = new Account(Name = name);            insert acc;        } catch (DmlException e) {            System.debug('DML Error: ' + e.getMessage());        } finally {            System.debug('DML Operation Completed.');        }    } }

  • এখানে insert DML অপারেশনে Exception Handling করা হয়েছে। কোনো ত্রুটি ঘটলে catch ব্লকে ত্রুটির বার্তা প্রিন্ট হবে, এবং finally ব্লকে একটি মেসেজ প্রিন্ট হবে।

Exception Handling এর ভালো অনুশীলন

  • স্পেসিফিক Exception ধরুন: সাধারণ Exception না ধরে নির্দিষ্ট Exception টাইপ ধরার চেষ্টা করুন, যেমন DmlException, NullPointerException
  • finally ব্লক ব্যবহার করুন: যেখানে সম্ভব, finally ব্লক ব্যবহার করে রিসোর্স মুক্ত করুন।
  • Detailed Error Message প্রদর্শন করুন: Exception এর getMessage() এবং getStackTraceString() মেথড ব্যবহার করে ত্রুটির বিবরণ দেখান।
  • Nested Exception Avoid করুন: একাধিক try-catch ব্লক বা nested exception এড়িয়ে চলুন।

সংক্ষেপে

  • Exception Handling প্রোগ্রামিং চলাকালীন ত্রুটি সমাধানে সহায়ক, যা প্রোগ্রামকে ব্যাহত হওয়া থেকে রক্ষা করে।
  • try-catch-finally ব্লকের মাধ্যমে ত্রুটি সমাধান এবং রিসোর্স ম্যানেজমেন্ট সহজ হয়।
  • DML Exception Handling এবং Custom Exception Message ব্যবহারের মাধ্যমে উন্নত ডিবাগিং এবং ব্যবহারের সুবিধা পাওয়া যায়।

Exception Handling Apex প্রোগ্রামিং-এ একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যা প্রোগ্রামকে ত্রুটি সহ্য করে চলমান রাখতে এবং ব্যবস্থাপনা কার্যক্রম উন্নত করতে সহায়ক।

 

Content added By

Try-Catch-Finally ব্লক এবং Throw Statement

200
200

Apex-এ Try-Catch-Finally ব্লক এবং Throw Statement Exception Handling এর একটি গুরুত্বপূর্ণ অংশ, যা ত্রুটি সনাক্ত ও সঠিকভাবে হ্যান্ডল করতে সহায়ক। Try-Catch-Finally ব্লক কোনো কোডে ত্রুটি ঘটলে তা হ্যান্ডল করে এবং Throw Statement ব্যবহার করে নির্দিষ্ট ত্রুটি তৈরি বা "থ্রো" করতে পারে।


Try-Catch-Finally ব্লক

Try-Catch-Finally ব্লক ত্রুটি হ্যান্ডল করার একটি স্ট্রাকচার, যা তিনটি অংশে বিভক্ত:

Try ব্লক: try ব্লকের মধ্যে এমন কোড লেখা হয় যেখানে ত্রুটি ঘটতে পারে। Exception ঘটলে এটি catch ব্লকে চলে যায়।

Catch ব্লক: catch ব্লক Exception এর ধরন অনুযায়ী ত্রুটি সনাক্ত করে এবং তা হ্যান্ডল করে। এখানে নির্দিষ্ট Exception (যেমন DmlException, NullPointerException) উল্লেখ করা যায়।

Finally ব্লক: finally ব্লক সবসময় চালিত হয়, Exception ঘটুক বা না ঘটুক। এটি সাধারণত ক্লিনআপ কাজের জন্য ব্যবহৃত হয়।

Try-Catch-Finally ব্লকের উদাহরণ

try {
    // Potentially error-prone code
    Integer result = 10 / 0; // Division by zero, causes ArithmeticException
    System.debug('Result: ' + result);
} catch (ArithmeticException e) {
    System.debug('ArithmeticException: ' + e.getMessage());
} catch (Exception e) {
    System.debug('General Exception: ' + e.getMessage());
} finally {
    System.debug('Operation completed.');
}
  • Try ব্লক: যেখানে Division by Zero ত্রুটি ঘটবে।
  • Catch ব্লক: ArithmeticException-এর ক্ষেত্রে প্রথম catch ব্লক কাজ করবে। অন্য Exception হলে দ্বিতীয় catch ব্লক কাজ করবে।
  • Finally ব্লক: সবসময় চালিত হবে এবং "Operation completed." মেসেজ প্রিন্ট করবে।

Throw Statement

Throw Statement এর মাধ্যমে নির্দিষ্ট Exception তৈরি করা হয় এবং ইচ্ছাকৃতভাবে Exception "থ্রো" করা হয়। এটি সাধারণত কাস্টম Exception তৈরি বা নির্দিষ্ট শর্ত পূরণ না হলে ত্রুটি সনাক্ত করতে ব্যবহৃত হয়। Throw Statement ব্যবহার করে Exception তৈরি করার জন্য throw কিওয়ার্ড ব্যবহার করা হয়।

Throw Statement উদাহরণ

public void validateAge(Integer age) {
    if (age < 18) {
        throw new IllegalArgumentException('Age must be 18 or older.');
    }
    System.debug('Age is valid.');
}
  • এখানে age ১৮ এর কম হলে IllegalArgumentException Exception থ্রো করা হয়েছে এবং কাস্টম বার্তা প্রদান করা হয়েছে।

Throw Statement এর সাথে Try-Catch-Finally ব্লক

Throw Statement এর মাধ্যমে Exception তৈরি করার পর Try-Catch-Finally ব্লকে এটি হ্যান্ডল করা যেতে পারে।

try {
    validateAge(15); // Throws IllegalArgumentException
} catch (IllegalArgumentException e) {
    System.debug('Caught Exception: ' + e.getMessage());
} finally {
    System.debug('Validation completed.');
}
  • Throw Statement: validateAge(15) কল করলে IllegalArgumentException থ্রো হয়।
  • Catch ব্লক: IllegalArgumentException Exception ধরে এবং বার্তা প্রদর্শন করে।
  • Finally ব্লক: সবসময় চালিত হয় এবং "Validation completed." প্রিন্ট করে।

Custom Exception তৈরিতে Throw Statement

Apex এ কাস্টম Exception তৈরি করে নির্দিষ্ট পরিস্থিতিতে Exception থ্রো করা যায়। Custom Exception তৈরির জন্য নতুন একটি ক্লাস তৈরি করে extends Exception ব্যবহার করা হয় এবং এরপর throw ব্যবহার করে Exception তৈরি করা যায়।

Custom Exception উদাহরণ

// Custom Exception ক্লাস
public class AgeValidationException extends Exception {}

public void validateCustomAge(Integer age) {
    if (age < 18) {
        throw new AgeValidationException('Age must be 18 or older.');
    }
    System.debug('Age is valid.');
}

// Try-Catch ব্লক দিয়ে Custom Exception হ্যান্ডল করা
try {
    validateCustomAge(15); // Throws AgeValidationException
} catch (AgeValidationException e) {
    System.debug('Caught Custom Exception: ' + e.getMessage());
}
  • Custom Exception: AgeValidationException নামে নতুন Exception তৈরি করা হয়েছে।
  • Throw Statement: যদি age ১৮ এর কম হয়, তবে AgeValidationException Exception থ্রো করা হয়েছে।
  • Catch ব্লক: AgeValidationException Exception সনাক্ত করে এবং বার্তা প্রিন্ট করে।

Exception Handling এর কিছু গুরুত্বপূর্ণ বিষয়

  1. Specific Exception Catching: নির্দিষ্ট Exception যেমন DmlException, NullPointerException ধরলে ত্রুটি হ্যান্ডলিং আরও কার্যকর হয়।
  2. Finally ব্লক ব্যবহার করা: Exception ঘটলেও ক্লিনআপ কাজের জন্য finally ব্লক ব্যবহার করা উচিত।
  3. Custom Exception তৈরি করা: প্রয়োজন অনুযায়ী কাস্টম Exception তৈরি করলে কোড আরও পরিষ্কার ও সুসংগঠিত হয়।
  4. Error Logging: Exception লোগ করে ত্রুটির উৎস ও কারণ নির্ধারণ করা যায়।

সারসংক্ষেপ

  • Try-Catch-Finally ব্লক: Try ব্লকে ত্রুটি সম্ভাব্য কোড রাখা হয়, Catch ব্লকে ত্রুটি হ্যান্ডল করা হয়, এবং Finally ব্লক সবসময় চালিত হয়।
  • Throw Statement: নির্দিষ্ট শর্ত পূরণ না হলে Exception তৈরি করে থ্রো করা হয়।
  • Custom Exception: Custom Exception তৈরি করে নির্দিষ্ট শর্তে Exception হ্যান্ডল করা যায়।

Exception Handling Apex এ কোডের স্থায়িত্ব ও কার্যকারিতা বৃদ্ধি করে এবং ত্রুটির সময় সঠিক পদক্ষেপ গ্রহণে সহায়ক।

Content added By

Custom Exceptions এর ব্যবহার

184
184

Custom Exception হলো Apex প্রোগ্রামিং ভাষায় তৈরি একটি বিশেষ ধরনের Exception যা ব্যবহারকারীর নির্দিষ্ট চাহিদা ও শর্ত অনুসারে তৈরি করা হয়। সাধারণত প্রয়োজন অনুযায়ী Custom Exception তৈরি করা হয় যাতে Exception Handling আরও উন্নত হয় এবং কোডে ত্রুটি বুঝতে সহজ হয়। Custom Exception-এ নির্দিষ্ট বার্তা, কার্যক্রম এবং লজিক যুক্ত করা যায়, যা সাধারণ Exception থেকে আলাদা।


Custom Exception তৈরি করার মূলনীতি

Apex-এ Custom Exception তৈরি করতে Exception ক্লাসকে ইনহেরিট করে একটি নতুন ক্লাস তৈরি করতে হয়। Custom Exception-এর সাহায্যে নির্দিষ্ট পরিস্থিতিতে ত্রুটি নির্দেশ করা যায় এবং প্রয়োজনীয় তথ্য প্রদান করা যায়।

Custom Exception তৈরি করার সাধারণ গঠন

public class CustomExceptionName extends Exception {
    // কনস্ট্রাক্টর
    public CustomExceptionName(String message) {
        super(message);
    }
}
  • CustomExceptionName: Custom Exception-এর নাম।
  • Constructor: কনস্ট্রাক্টর super() ব্যবহার করে Exception ক্লাসের কনস্ট্রাক্টরকে কল করে, যাতে একটি কাস্টম বার্তা যুক্ত করা যায়।

Custom Exception এর ব্যবহার উদাহরণ

নিচে একটি উদাহরণ দেয়া হলো যেখানে InsufficientBalanceException নামের একটি Custom Exception তৈরি করা হয়েছে, যা ব্যাংকের অ্যাকাউন্টে পর্যাপ্ত ব্যালেন্স না থাকলে একটি ত্রুটি নির্দেশ করে।

Custom Exception তৈরি

public class InsufficientBalanceException extends Exception {
    public InsufficientBalanceException(String message) {
        super(message);
    }
}

Custom Exception ব্যবহার

নিচের উদাহরণে, যদি অ্যাকাউন্টের ব্যালেন্স উত্তোলনের জন্য প্রয়োজনীয় ব্যালেন্সের চেয়ে কম থাকে, তাহলে InsufficientBalanceException তৈরি করা হবে।

public class BankAccount {
    public Double balance;

    public BankAccount(Double initialBalance) {
        this.balance = initialBalance;
    }

    public void withdraw(Double amount) {
        if (amount > balance) {
            throw new InsufficientBalanceException('Insufficient balance for withdrawal.');
        } else {
            balance -= amount;
            System.debug('Withdrawal successful. Remaining balance: ' + balance);
        }
    }
}

Custom Exception কল করা

try {
    BankAccount account = new BankAccount(1000.0);
    account.withdraw(1500.0); // এটি ত্রুটি সৃষ্টি করবে
} catch (InsufficientBalanceException e) {
    System.debug('Error: ' + e.getMessage());
}
  • এখানে withdraw মেথডে যদি প্রয়োজনীয় পরিমাণ ব্যালেন্স না থাকে, তাহলে InsufficientBalanceException তৈরি হবে এবং একটি কাস্টম বার্তা প্রিন্ট হবে।
  • catch ব্লকে Custom Exception ধরার মাধ্যমে ত্রুটির জন্য নির্দিষ্ট বার্তা প্রদান করা হয়েছে।

Custom Exception এর ব্যবহারিক দিক

Custom Exception ব্যবহার করার মাধ্যমে প্রোগ্রামে উন্নত Exception Handling এবং স্পষ্ট ত্রুটি নির্দেশনা দেওয়া যায়। এর কিছু গুরুত্বপূর্ণ ব্যবহারিক দিক হলো:

বিশেষ পরিস্থিতি হ্যান্ডল করা: Custom Exception ব্যবহার করে নির্দিষ্ট পরিস্থিতি অনুযায়ী ত্রুটি নির্দেশ করা যায়, যা সাধারণ Exception দিয়ে বোঝানো সম্ভব নয়।

সহজ ডিবাগিং: নির্দিষ্ট Custom Exception তৈরি করে কোডে কোন সমস্যা বা Exception ঘটছে তা দ্রুত বোঝা যায় এবং ডিবাগিং সহজ হয়।

অর্থপূর্ণ বার্তা প্রদান: Custom Exception ব্যবহার করে অর্থপূর্ণ ত্রুটি বার্তা প্রদান করা সম্ভব, যা Exception-এর উৎস এবং প্রাসঙ্গিকতা বুঝতে সহায়ক।

ব্যবহারকারী বান্ধব: Custom Exception ব্যবহার করে ব্যবহারকারীর জন্য আরো উপযোগী বার্তা এবং নির্দেশনা প্রদান করা যায়।


আরও একটি উদাহরণ: Custom Exception For Invalid Age

নিচে InvalidAgeException নামে একটি Custom Exception তৈরি করা হয়েছে, যা শুধুমাত্র বয়স ১৮ বছরের কম হলে ত্রুটি নির্দেশ করবে।

Custom Exception তৈরি

public class InvalidAgeException extends Exception {
    public InvalidAgeException(String message) {
        super(message);
    }
}

Custom Exception ব্যবহার

public class Registration {
    public void registerUser(Integer age) {
        if (age < 18) {
            throw new InvalidAgeException('Age must be 18 or older to register.');
        } else {
            System.debug('User registered successfully.');
        }
    }
}

Custom Exception কল করা

try {
    Registration reg = new Registration();
    reg.registerUser(16); // এটি ত্রুটি তৈরি করবে
} catch (InvalidAgeException e) {
    System.debug('Error: ' + e.getMessage());
}
  • এখানে registerUser মেথডে InvalidAgeException ব্যবহার করা হয়েছে। যদি বয়স ১৮ বছরের কম হয়, তাহলে Custom Exception তৈরি হবে এবং ব্যবহারকারীকে একটি নির্দিষ্ট বার্তা প্রদান করবে।

Custom Exception ব্যবহারের ভালো অনুশীলন

সঠিক নামকরণ: Exception-এর জন্য অর্থবহ নামকরণ করুন যাতে Exception এর ধরন বোঝা যায়, যেমন InsufficientBalanceException, InvalidAgeException

অর্থপূর্ণ বার্তা প্রদান: Custom Exception-এর কনস্ট্রাক্টরে অর্থপূর্ণ বার্তা দিন, যাতে ত্রুটি সহজে বোঝা যায়।

Exception Hierarchy তৈরি: বড় প্রজেক্টের ক্ষেত্রে Exception-গুলো একটি Parent Custom Exception থেকে ইনহেরিট করে Hierarchy তৈরি করতে পারেন, যেমন ApplicationException


সংক্ষেপে

Custom Exception-এর মাধ্যমে নির্দিষ্ট ত্রুটি পরিস্থিতি হ্যান্ডল করা যায় এবং প্রোগ্রামিংয়ের উন্নত ত্রুটি নির্দেশনা ও ডিবাগিং সুবিধা পাওয়া যায়। Custom Exception তৈরি করে Exception Handling আরও সুনির্দিষ্ট, ব্যবহারকারী-বান্ধব এবং সহজতর করা যায়, যা কোডিং প্রক্রিয়াকে উন্নত করে।

Content added By

Exception Logging এবং Debugging Techniques

251
251

Exception Logging এবং Debugging Techniques Apex-এ কোডের ত্রুটি শনাক্ত ও নির্ধারণ করতে সাহায্য করে। Logging এবং Debugging-এর মাধ্যমে প্রোগ্রামের কাজের ধারা বোঝা যায় এবং সমস্যার উৎস ও সমাধানের জন্য প্রয়োজনীয় তথ্য পাওয়া যায়।


Exception Logging

Exception Logging হলো Exception Handling-এর সময় ত্রুটি বা ব্যতিক্রমের তথ্য সংরক্ষণ করার প্রক্রিয়া। এটি প্রোগ্রাম চলাকালীন ত্রুটির বিস্তারিত তথ্য প্রদান করে, যা পরবর্তীতে সমস্যা সমাধানে সাহায্য করে। Apex-এ Exception Logging-এর জন্য সাধারণত System.debug() এবং Custom Logging মেকানিজম ব্যবহার করা হয়।

Exception Logging-এর মূল উদ্দেশ্য

  1. ত্রুটি সনাক্তকরণ: Exception Logging-এর মাধ্যমে ত্রুটির উৎস দ্রুত সনাক্ত করা যায়।
  2. ডিবাগিং সহজীকরণ: Exception Logging ত্রুটির বিস্তারিত তথ্য সরবরাহ করে, যা কোড ডিবাগ করতে সহজ করে।
  3. ত্রুটির সময় এবং স্থান ট্র্যাকিং: Exception কখন এবং কোথায় ঘটছে তা সহজে ট্র্যাক করা যায়।
  4. পরবর্তীতে বিশ্লেষণ: Exception লগ পর্যালোচনা করে প্রোগ্রামের গঠন ও ত্রুটি নির্ধারণ করা যায়।

Exception Logging-এর উদাহরণ

নিচের উদাহরণে Exception Handling-এর মাধ্যমে Exception Logging করা হয়েছে।

public class ExceptionLoggerExample {
    public void divideNumbers(Integer a, Integer b) {
        try {
            Integer result = a / b;
            System.debug('Result: ' + result);
        } catch (ArithmeticException e) {
            System.debug('Error: Cannot divide by zero.');
            System.debug('Exception Message: ' + e.getMessage());
            System.debug('Stack Trace: ' + e.getStackTraceString());
        }
    }
}
  • System.debug: Exception এর getMessage() এবং getStackTraceString() মেথডের মাধ্যমে ত্রুটির বিবরণ ও Stack Trace প্রিন্ট করা হয়েছে।
  • Stack Trace: Stack Trace প্রিন্ট করে Exception ঘটার স্থান এবং পথ খুঁজে পাওয়া যায়।

Custom Logging

Apex-এ Custom Logging-এর মাধ্যমে Exception Logging আরও উন্নত করা যায়, যেখানে লগ রেকর্ড ডাটাবেজে সংরক্ষণ করা যায় অথবা ইমেল, External API কল ইত্যাদির মাধ্যমে লগ পাঠানো যায়।

Custom Logging উদাহরণ

নিচের উদাহরণে Log__c নামে একটি Custom Object-এ লগ সংরক্ষণ করা হয়েছে।

public class CustomLogger {
    public static void logException(Exception e) {
        Log__c log = new Log__c();
        log.Exception_Message__c = e.getMessage();
        log.Stack_Trace__c = e.getStackTraceString();
        log.Log_Time__c = DateTime.now();
        insert log;
    }
}
public class ExceptionExample {
    public void riskyOperation() {
        try {
            // সম্ভাব্য ত্রুটিযুক্ত অপারেশন
            Integer result = 10 / 0;
        } catch (Exception e) {
            CustomLogger.logException(e); // Custom Logger-এ লগ সংরক্ষণ
        }
    }
}
  • Custom Object (Log__c): ত্রুটি লগ করার জন্য Log__c নামে একটি Custom Object ব্যবহার করা হয়েছে।
  • Custom Logging Method: logException() মেথডে Exception লগ করা হয়েছে, যা ডেটাবেজে সংরক্ষণ করা যায়।

Debugging Techniques

Debugging Techniques প্রোগ্রাম চলাকালীন ত্রুটি ও অপ্রত্যাশিত ফলাফল শনাক্ত ও সমাধানে সহায়ক। Apex-এ বেশ কিছু সাধারণ Debugging Techniques ব্যবহৃত হয়।

১. System.debug() ব্যবহার

System.debug() Apex-এ সবচেয়ে সাধারণ ডিবাগিং টুল, যা কোডের বিভিন্ন স্থানে ভেরিয়েবল বা লজিক্যাল স্টেট প্রিন্ট করে, যাতে ডিবাগিং সহজ হয়।

public class DebugExample {
    public void debugTest() {
        Integer a = 10;
        Integer b = 0;

        System.debug('Value of a: ' + a);
        System.debug('Value of b: ' + b);

        try {
            Integer result = a / b;
        } catch (Exception e) {
            System.debug('Error: Division by zero');
        }
    }
}

২. Debug Logs

Salesforce প্ল্যাটফর্মে Debug Logs ব্যবহার করে Session এবং Workflow ট্র্যাক করা যায়। Debug Logs Salesforce UI থেকে এনাবল করা যায়, যেখানে Apex Code, Workflow, Validation Rules, এবং SOQL Query Execution-সহ প্রায় সব কার্যক্রমের লগ দেখা যায়।

৩. Developer Console ব্যবহার

Developer Console Apex কোডের ত্রুটি ও কার্যক্রম অনুসন্ধানে সহায়ক। এটি Debug Logs বিশ্লেষণ, Query Editor, এবং Execution Log দেখার জন্য একটি কার্যকরী টুল।

  • Execution Overview: সব প্রক্রিয়ার সারসংক্ষেপ এবং ত্রুটির স্থান নির্দেশ করে।
  • Logs Panel: প্রোগ্রামের বিভিন্ন কার্যক্রম ও ত্রুটি প্রদর্শন করে।

৪. Debug Levels সেট করা

Debug Levels দিয়ে Logging Level নির্ধারণ করা যায়, যেমন INFO, DEBUG, WARN, ERROR। এটি ডিবাগ লেভেল অনুযায়ী নির্দিষ্ট তথ্য দেখতে সহায়ক।

৫. Checkpoint ব্যবহার

Checkpoint ব্যবহার করে কোডের নির্দিষ্ট স্থানে লগ বা ভেরিয়েবলের মান ট্র্যাক করা যায়। এটি Debug Logs-এ ভেরিয়েবল ও স্টেট পরীক্ষা করতে সহায়ক।


Exception Logging এবং Debugging-এর ভালো অনুশীলন

বিশ্লেষণমূলক Logging ব্যবহার: Exception Logging করতে হলে গুরুত্বপূর্ণ তথ্য যেমন Exception Message, Stack Trace, Timestamp লগ করা উচিত।

Debug Log সঠিক লেভেলে সেট করুন: Logging Level অতিরিক্তভাবে সেট করা উচিত নয়; শুধু প্রয়োজনীয় তথ্য দেখতে DEBUG বা INFO ব্যবহার করা ভালো।

Sensitive Data Logging এড়িয়ে চলুন: ব্যক্তিগত তথ্য বা সংবেদনশীল ডেটা Logging এড়িয়ে চলুন।

Custom Logging Database Limits মেনে চলুন: Custom Logging-এ অতিরিক্ত ডেটা ইনসার্ট না করা ভালো, কারণ Salesforce এর ডেটাবেজ গভর্নর লিমিট আছে।


সংক্ষেপে

  • Exception Logging প্রোগ্রামে Exception Handling-এর সময় ত্রুটির তথ্য সংরক্ষণে সহায়ক।
  • Debugging Techniques প্রোগ্রামের ত্রুটি শনাক্ত ও সমাধানে সহায়ক, যা System.debug(), Debug Logs, এবং Developer Console ব্যবহার করে সম্পন্ন করা যায়।
  • Custom Logging এবং Debugging Exception Handling ও প্রোগ্রামের কার্যক্রম বোঝার জন্য উন্নত বিশ্লেষণমূলক তথ্য প্রদান করে।

Exception Logging এবং Debugging Techniques ব্যবহার করে Apex কোডে ত্রুটি পরিচালনা ও বিশ্লেষণ করা আরও কার্যকর ও সহজ হয়, যা প্রোগ্রামিং এর উন্নত মান নিশ্চিত করে।

Content added By
Promotion